home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
071-080
/
amok77
/
mousemove_2
/
movemouse2.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
71 lines
(*---------------------------------------------------------------------------
:Program. MoveMouse2
:Author. Thomas Igracki
:E-Mail. T.IGRACKI@BAMP.ZER
:Version. 1.0
:Date. 04-Jan-92
:Copyright. PD
:Language. Oberon
:Translator. Amiga Oberon 2.13d
:Contents. Damit läßt sich der Mauszeiger auf dem akt. Screen positionieren
:Usage. MoveMouse2 [r=rel] <x> <y>, r=rel -> relativ zur akt. Position
---------------------------------------------------------------------------*)
(* $StackChk- $RangeChk- $CaseChk- $OvflChk- $ReturnChk- $TypeChk- $NilChk- *)
MODULE MoveMouse2;
IMPORT
s: SYSTEM,
e: Exec,
d: Dos,
I: Intuition,
in: Input,
ie: InputEvent;
TYPE
ArgsStruct = STRUCT END; LONGPTR = POINTER TO LONGINT;
VAR
DevIO : e.IOStdReqPtr;
DevPort : e.MsgPortPtr;
DeviceOpen : BOOLEAN;
Event : ie.InputEventAdr;
PPixel : ie.IEPointerPixel;
dos : d.DosLibraryPtr;
RDArgs : d.RDArgsPtr;
args : STRUCT (du:ArgsStruct) rel: LONGINT; x,y: LONGPTR END;
PROCEDURE ReadArgs*{dos,-798}(template{1} : ARRAY OF CHAR;
array{2} : ArgsStruct;
args{3} : d.RDArgsPtr): d.RDArgsPtr;
BEGIN
dos := d.dos; RDArgs := ReadArgs ('r=rel/S,x/N/A,y/N/A',args,NIL);
IF RDArgs = NIL THEN d.PrintF ('Usage: MoveMouse2 [r=rel] <x> <y>\n'); HALT(20) END;
DevPort := e.CreateMsgPort();
IF DevPort = NIL THEN HALT(20) END;
DevIO := e.CreateIORequest (DevPort,s.SIZE(DevIO^));
IF DevIO = NIL THEN HALT(20) END;
IF e.OpenDevice ('input.device',0,DevIO,LONGSET{}) # 0 THEN HALT(20) END;
DeviceOpen := TRUE;
(* Set new Mouse XY *)
DevIO.command := in.writeEvent;
DevIO.length := s.SIZE(Event);
Event.class := ie.newpointerpos;
Event.subClass := ie.pixel;
IF args.rel = I.LTRUE THEN Event.qualifier:= {ie.relativeMouse} END;
PPixel.screen := I.int.activeScreen;
PPixel.position.x := SHORT(args.x^);
PPixel.position.y := SHORT(args.y^);
Event.addr := s.ADR(PPixel);
DevIO.data := s.ADR(Event); e.OldDoIO (DevIO);
CLOSE
IF DeviceOpen THEN e.CloseDevice (DevIO) END;
IF DevPort # NIL THEN e.DeleteMsgPort (DevPort) END;
IF DevIO # NIL THEN e.DeleteIORequest (DevIO) END;
IF RDArgs # NIL THEN d.FreeArgs (RDArgs) END;
END MoveMouse2.